package com.example.demofx.master;

import javafx.scene.image.Image;

import java.io.File;
import java.util.Optional;
import java.util.concurrent.CompletableFuture;

/**
 * 照片加载器接口，提供照片加载、压缩和缓存功能
 */
public interface PhotoLoader {

    /**
     * 加载照片并应用优化策略
     * @param photoFile 照片文件
     * @param targetWidth 目标宽度
     * @param targetHeight 目标高度
     * @return 加载完成的照片
     */
    Optional<Image> loadPhoto(File photoFile, int targetWidth, int targetHeight);

    /**
     * 异步加载照片并应用优化策略
     * @param photoFile 照片文件
     * @param targetWidth 目标宽度
     * @param targetHeight 目标高度
     * @return 异步加载的Future对象
     */
    CompletableFuture<Optional<Image>> loadPhotoAsync(File photoFile, int targetWidth, int targetHeight);

    /**
     * 压缩照片并保存到指定位置
     * @param originalFile 原始照片文件
     * @param targetWidth 目标宽度
     * @param targetHeight 目标高度
     * @param quality 压缩质量 (0.0-1.0)
     * @return 压缩后的照片文件
     */
    Optional<File> compressPhoto(File originalFile, int targetWidth, int targetHeight, double quality);

    /**
     * 清除照片缓存
     */
    void clearCache();
}